<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;

/**
 * 2015-08-26，已经启用，入口已经注释掉了，如果日后需要启用，请注意修改从 session 获取的数据
 * 增加了 cookie 功能，不需要每次都要登录，如果从 session 获取的数据为空可以尝试用 cookie 中获取；
 */
class DiscussionController extends Controller {

    /**
     * 进入首页，暂时仅仅只显示最新的10篇文章，其他文件通过滚动鼠标使用ajax的方式加载显示
     */
    public function index(){
        $this->assign("pageTitle", "讨论");  //  设置文件的title
        
        Load('extend');
        $list = M("Discussions")->order('quest_time DESC')->limit(10)->select();
        $listTemp = array();
        foreach ($list as $c) {  //  计算问题发表时间离当前时间是多少分钟或者几个小时
            $c['quest_time'] = $this->dateDiff($c['quest_time']);
            $listTemp[] = $c;
        }
        
        $this->assign("centList", $listTemp);

        //初始化页面的的文章类型列表
        $allContType = M("ContentType")->select();
        $this->assign("typeList", $allContType);

        $this->display();
    }
 
    /**
     * //时间比较函数，返回两个日期相差几秒、几分钟、几小时或几天 
     * @param  [[Type]] $date1     [[Description]]
     * @param  [[Type]] $date2     [[Description]]
     * @param  [[Type]] [$unit=""] [[Description]]
     * @return boolean  [[Description]]
     */
    function dateDiff($date1) {
        $questTime=strtotime($date1);
        //$questTime = $date1;
        $nowTime=strtotime(date("y-m-d H:i:s", time()));
        /**
         * 如果小于60分钟显示“提问于xxx分钟前”
         * 如果大于60分钟显示“提问于xxx个小时前”
         * 如果大于24*60分钟显示“提问于xxx天前”
         * @param  [[Type]] $time1&&$time2 [[Description]]
         * @return [[Type]] [[Description]]
         */

        if($questTime && $nowTime) {
            $mm = (float)($nowTime-$questTime)/60;  // 得到分钟  $nowTime-$questTime得到的是毫秒
            if ($mm <= 0)
                return "提问于1分钟前";

            if (60 <= $mm) {  // 大于60分钟，大于一个小时了
                if (60*24 <= $mm) {  // 大于一天
                    return "提问于".round($mm/60/24)."天前";  // 一个小时60分钟 一天24个小时
                } else {  // 在60到24*60之间，一天之内
                    return  "提问于".round($mm/60)."个小时前";  //提问于xxx个小时前
                }
            } else {  //小于60分钟，一个小时之内
                return "提问于".round($mm)."分钟前";
            }
        } else {
            return "提问于刚刚";
        }
    }

    /**
     * 显示文章的详细信息
     */
    public function detail() {

        $id = $_GET['id'];
        if ($id) {  //id不为空转到详细页面
            $content = M("Discussions")->where(array('id' => $id))->find();
            
            $this->assign("pageTitle", $content['title']);  //  设置文件的title
            
            //  显示评论列表
//            $commList = M("Comment")->where(array('c_id' => $id))->order('id DESC')->select();
        } else {  //转回首页
            //$this->display("index.php?m=Home&c=Index&a=index");
            header('Location: index.php?m=Home&c=Discussion&a=index');
        }
        //初始化页面的的文章类型列表
        $allContType = M("ContentType")->select();
        $this->assign("typeList", $allContType);
        $this->assign("content", $content);

        $this->display();
    }

   
    /**
     * ajax方式分页，滚动到底部自动加载下一页
     */
    public function ajaxList() {
        if(!empty($_POST["pagesize"]) && !empty($_POST["pagenumber"])){
//            $list = array();
            $centList = array();
            //$array_news[]='委员建议尽快推行延迟退休：70岁身体还很好';
            Load('extend');
            $modelCtt = M("Content");
            // 获取过滤条件
            $cont_type = $_GET['cont_type'];  //文章分类
            if ($cont_type) {
                $centList = $modelCtt->where(array('cont_type' => $cont_type))->order('quest_time DESC')->select();
            } else {
                $centList = $modelCtt->order('quest_time DESC')->select();
            }
//            foreach ($centList as $c) {
//                $tmp = $c['content'];
//                $tmp = htmlspecialchars_decode($tmp);
//                $tmp = mb_substr(strip_tags($tmp), 0, 100, 'utf-8');
//                $c['content'] = $tmp;
//                $list[] = $c;
//            }
            //$this->assign("centList", $list);
            
            $array	  = array();
            $number   = $_POST["pagenumber"];
            $pagesize = $_POST["pagesize"];
            $p		  = $pagesize*$number-$pagesize;
            $s		  = $pagesize*$number;

            if(!empty($centList[$p])){
                $i=0;
                for($p;$p<$s;$p++){
                    $array['data'][$i]['id'] = $centList[$p]['id'];
                    $array['data'][$i]['title'] = $centList[$p]['title'];
                    $array['data'][$i]['ctt_summary'] = $centList[$p]['ctt_summary'];
                    $array['data'][$i]['public_time'] = $centList[$p]['public_time'];
                    $array['data'][$i]['ctt_img_url'] = $centList[$p]['ctt_img_url'];
                    
                    //  直接获取文章的类型名称
                    $type_name = M("ContentType")->getFieldByType_name($centList[$p]['cont_type'],'type_no');
                    $array['data'][$i]['cont_type_name'] =$type_name;
                    $array['data'][$i]['cont_type_no'] =$centList[$p]['cont_type'];
                    
                    $i++;
                }
                $array['length']=$i;
            } else {
                $array['length']='0';
            }
            echo json_encode($array);
        }
    }
    
    /**
     * 转到发布问题页面 
    */
    public function ask_question() {
        
        $this->assign("pageTitle", "我要提问");  //  设置文件的title
        //
         // 如果是通过submit提交的为post
       if (IS_POST) {
           //  从session里获取登录用户的信息，此session的信息是在oauth2\duoshuo\SyncDuoShuoLoginStatu2Local.php里设置的
           //$LOGINUSERINFO = $SESSION['LOGINUSERINFO'];
           //$Model = D('Content');
            $data['id'] = MD5(microtime());  //指定本系统唯一吗作为id，应为设置到多说评论插件需要唯一的id
            $contentStr = $_POST['content'];
            $data['questioner'] = $_SESSION['LOGINUSERINFO']['name'];  // 提问者
            $data['title'] = $_POST['title'];  // 
            $data['tags'] = $_POST['tags'];  //  保存到数据的数据是以逗号分隔
//            var_dump($_POST['tags']);
            $data['content'] = $contentStr;
            $data['views_count'] = 1;  // 默认浏览数
            $data['anwser_count'] = 0;  // 默认回复数
            $data['quest_head_pic'] = $_SESSION['LOGINUSERINFO']['avatar_url'];  // 提问者头像
            $data['quest_home_page_url'] = $_SESSION['LOGINUSERINFO']['url'];  // 提问者主页
            //$data['u_id'] = 'ubuntuvim';
            $data['quest_time'] = date('Y-m-d H:i:s', time());  //  大写H表示24小时格式的时间，否则是12小时格式时间
            //  处理首页显示的图片，默认显示的图片是文章内容的第一张图片，如果没有默认为设定的图片
            // 解析文章的内容，找出第一幅图片的URL
//            $data['ctt_img_url'] = $this->getImgFromCt($contentStr); //
            //var_dump($data);
            $Model = M('Discussions');
            //$flag = $Model->add($data);
           //var_dump($data);
             // 验证通过 写入新增数据
            $id = intval($_GET['id']);
            if ($id) {  //修改
                //$data['id'] = $id; 
                $flag = $Model->where(array('id' => $id))->save($data);
            } else {
                $flag = $Model->add($data);
            }
            if ($flag) {
                $this->success('发表成功!', U('Home/Discussion/index'));  //U('/admin.php?m=Admin&c=Index&a=addArtType')
                //$this->success('保存成功!');

            } else {
               //error($message='',$jumpUrl='',$ajax=false) {
                $this->error('发表失败，请重试！', U('Home/Discussion/ask_question'));
                //$this->success('保存失败!');
                 $id = intval($_GET['id']);
                if ($id) {  //如果不为空，说明从“修改”进入的，应该把原有的信息显示在页面上
                    $where = array('id' => $id);
                    $ct = $Model->where($where)->find();
                    $this->assign('ct', $ct);
                } else {
                    $this->assign('ct', $data);  // 发表出错，显示已经填写的信息
                }
            }

           //$this->display();  //转到新增的页面
       } else {
            $id = intval($_GET['id']);
            if ($id) {  //如果不为空，说明从“修改”进入的，应该把原有的信息显示在页面上
                $where = array('id' => $id);
                $ct = M('Discussions')->where($where)->find();
                $this->assign('ct', $ct);
            } else {
                //  ……
            }
            $this->display();  //转到新增的页面
       }
    }

    /**
     * 使用多说插件登录后登录信息在SyncDuoShuoLoginStatus2Local.php里同步到本系统，
     * 退出登录后需要销毁设置到被系统的session信息
     */
    public function logout_from_duoshuo() {
        session('LOGINUSERINFO', null); // 删除name
        $_SESSION['LOGINUSERINFO'] = null;
        // 跳转回到退出时的页面
        $fromStr = $_GET['from'];
        header("Location:$fromStr");
    }

}
